package com.quanxiaoha.weblog.web.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.quanxiaoha.weblog.common.domain.dos.MessageWallDO;
import com.quanxiaoha.weblog.common.domain.mapper.MessageWallMapper;
import com.quanxiaoha.weblog.common.PageResponse;
import com.quanxiaoha.weblog.common.Response;
import com.quanxiaoha.weblog.web.model.vo.messageWall.AddMessageWallReqVO;
import com.quanxiaoha.weblog.web.model.vo.messageWall.QueryMessageWallListReqVO;
import com.quanxiaoha.weblog.web.service.MessageWallService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.quanxiaoha.weblog.web.model.vo.messageWall.QueryMessageWallListRspVO;
import java.util.stream.Collectors;
import java.time.LocalDateTime;

@Service
@Slf4j
public class MessageWallServiceImpl extends ServiceImpl<MessageWallMapper, MessageWallDO> implements MessageWallService {

    @Autowired
    private MessageWallMapper messageWallMapper;

    /**
     * 添加留言
     *
     * @param addMessageWallReqVO
     * @return
     */
    @Override
    public Response addMessageWall(AddMessageWallReqVO addMessageWallReqVO) {
        // 构建DO对象
        MessageWallDO messageWallDO = MessageWallDO.builder()
                .nickname(addMessageWallReqVO.getNickname())
                .content(addMessageWallReqVO.getContent())
                .color(addMessageWallReqVO.getColor())
                .status(0) // 默认状态为待审核
                .isDeleted(0) // 未删除
                .build();

        // 保存留言（默认状态为待审核）
        messageWallMapper.insert(messageWallDO);
        return Response.success();
    }

    /**
     * 获取留言列表
     *
     * @param queryMessageWallListReqVO
     * @return
     */
    @Override
    public Response queryMessageWallList(QueryMessageWallListReqVO queryMessageWallListReqVO) {
        // 设置分页参数
        Page<MessageWallDO> page = new Page<>(queryMessageWallListReqVO.getCurrent(), queryMessageWallListReqVO.getSize());

        // 构建查询条件，只查询审核通过的留言
        LambdaQueryWrapper<MessageWallDO> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(MessageWallDO::getStatus, 1)
                .eq(MessageWallDO::getIsDeleted, 0) // 未删除的
                .orderByDesc(MessageWallDO::getCreateTime);

        // 执行分页查询
        IPage<MessageWallDO> messagePage = messageWallMapper.selectPage(page, wrapper);

        // 转换为VO对象
        IPage<QueryMessageWallListRspVO> voPage = messagePage.convert(messageWallDO -> 
            QueryMessageWallListRspVO.builder()
                .id(messageWallDO.getId())
                .nickname(messageWallDO.getNickname())
                .content(messageWallDO.getContent())
                .color(messageWallDO.getColor())
                .createTime(messageWallDO.getCreateTime())
                .build()
        );

        // 构建响应对象并返回
        return Response.success(voPage);
    }
}